package demo6;

import java.util.ArrayList;
import java.util.List;
import java.util.Random;

class Card {
    private String suit;//花色
    private int rank;//扑克的数字

    public Card(String suit, int rank) {
        this.suit = suit;
        this.rank = rank;
    }
    @Override
    public String toString() {
        return suit + rank;
    }
}

public class CardList {
    private static final String[] SUITS={"♦","♥","♠","♣"};

    public static List<Card> buyCards(){
        List<Card> list=new ArrayList<>();
        //产生4*13张牌
        for (int i = 0; i < SUITS.length; i++) {
            for (int j = 1; j <= 13; j++) {
                Card card=new Card(SUITS[i],j);
                list.add(card);
            }
        }
        return list;
    }
    //洗牌
    public static void shuffle(List<Card> list){

        Random random=new Random();//以系统自身时间为种子数

        for (int i = list.size()-1; i >0 ; i--) {
            int index=random.nextInt(i);//public int nextInt(int n)生成一个随机的int值介于[0,n)
            swap(list,i,index);
        }

    }

    public static void swap(List<Card> list,int i,int j){
        /*
         E set(int index, E element)
         将下标 index 位置元素设置为 element
         */
        Card tmp=list.get(i);//获取i位置牌
        list.set(i,list.get(j));//将j位置牌放在i为位置
        list.set(j,tmp);//将i位置牌放在j位置
    }

    public static void main(String[] args) {
        List<Card> list=buyCards();
        System.out.println(list);

        shuffle(list);
        System.out.println(list);
        //三个人，每个人轮流抓5张牌
        //每轮一人拿5张牌，总共拿5轮
        //控制次数

        List<List<Card>> hand=new ArrayList<>();
        hand.add(new ArrayList<>());
        hand.add(new ArrayList<>());
        hand.add(new ArrayList<>());

        for (int i = 0; i < 5; i++) {
            for (int j = 0; j < 3; j++) {//每一轮揭3张牌
                /*揭牌的逻辑 list数组，每次揭牌都是下标0的牌（删除remove 0)
                每个人都要把自己的牌存起来--list里面放牌
                */
                hand.get(j).add(list.remove(0));//第j个人添加牌card
            }
        }
        System.out.println("第一个人的牌"+hand.get(0));
        System.out.println("第二个人的牌"+hand.get(1));
        System.out.println("第三个人的牌"+hand.get(2));

        System.out.println("剩下的牌："+list);
    }

}
